package com.carsa.blackberry.domain.services.webServices;

import java.rmi.RemoteException;
import java.util.Vector;

import javax.xml.rpc.Stub;

import com.carsa.blackberry.MainKeys;
import com.carsa.blackberry.domain.services.webServices.impl.ZSdareMotivos.ZSdareMotivable;
import com.carsa.blackberry.domain.services.webServices.impl.ZSdareMotivos.ZWSSDARE_MOTIVOS1_Stub;
import com.carsa.blackberry.util.Logger;
import com.carsa.blackberry.util.XMLHandler;

/**
 * @author Nahuel Barrios.
 * @since 26/08/2010.
 * @version 1.0
 */
public class ZSdareMotivos_Service implements WebService, ZSdareMotivable {

    public Object invokeWebService() {
	Vector parameters = new Vector();
	parameters.addElement(MainKeys.WEB_SERVICES_DUMMY_VALUE);
	return this.invokeWebService(parameters);
    }

    public Object invokeWebService(Object parameters) {
	Object[] parametersArray = null;

	if (parameters.getClass().equals(Vector.class))
	    parametersArray = this.parseParameters((Vector) parameters);
	else if (parameters.getClass().equals(String.class))
	    parametersArray = this.parseParameters((String) parameters);

	return this.invokeWebService(parametersArray);
    }

    public Object invokeWebService(Object[] parametersArray) {
	ZWSSDARE_MOTIVOS1_Stub ws = new ZWSSDARE_MOTIVOS1_Stub();

	ws._setProperty(Stub.USERNAME_PROPERTY, MainKeys.WEB_SERVICES_USERNAME);
	ws._setProperty(Stub.PASSWORD_PROPERTY, MainKeys.WEB_SERVICES_PASSWORD);

	try {
	    return ws.ZSdareMotivos((String) parametersArray[0]);
	}
	catch (RemoteException e) {
	    Logger.logError(e);
	}
	catch (Exception anException) {
	    Logger.logError(Logger.getLocationMessageFor(this, "invokeWebService()")
		    + " intentando ejecutar el Web Service", anException);
	}
	return null;
    }

    public Object[] parseParameters(Vector parameters) {
	return new Object[] { parameters.elementAt(0) };// IDummy
    }

    public Object[] parseParameters(String xmlParameters) {
	XMLHandler parameters = new XMLHandler(xmlParameters);
	parameters.removeRootTag();

	// En este array van a ir todos los parametros que finalmente paso al metodo.
	Object[] returnObject = new Object[1];

	// Agrego el elemento.
	returnObject[0] = parameters.getElementValue(_qname_IDummy.getLocalPart());// IDummy

	return returnObject;
    }

    public String getName() {
	return MainKeys.WS_NAME_ZSDARE_MOTIVOS;
    }

}
